(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
add(0, x) → x
add(s(x), y) → s(add(x, y))
mult(0, x) → 0
mult(s(x), y) → add(y, mult(x, y))
Rewrite Strategy: INNERMOST
(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)
Converted CpxTRS to CDT
(2) Obligation:
Complexity Dependency Tuples Problem
Rules:
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
mult(0, z0) → 0
mult(s(z0), z1) → add(z1, mult(z0, z1))
Tuples:
ADD(s(z0), z1) → c1(ADD(z0, z1))
MULT(s(z0), z1) → c3(ADD(z1, mult(z0, z1)), MULT(z0, z1))
S tuples:
ADD(s(z0), z1) → c1(ADD(z0, z1))
MULT(s(z0), z1) → c3(ADD(z1, mult(z0, z1)), MULT(z0, z1))
K tuples:none
Defined Rule Symbols:
add, mult
Defined Pair Symbols:
ADD, MULT
Compound Symbols:
c1, c3
(3) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^2))) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
ADD(s(z0), z1) → c1(ADD(z0, z1))
We considered the (Usable) Rules:
mult(0, z0) → 0
mult(s(z0), z1) → add(z1, mult(z0, z1))
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
And the Tuples:
ADD(s(z0), z1) → c1(ADD(z0, z1))
MULT(s(z0), z1) → c3(ADD(z1, mult(z0, z1)), MULT(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = 0
POL(ADD(x1, x2)) = [2]x1
POL(MULT(x1, x2)) = x1·x2
POL(add(x1, x2)) = 0
POL(c1(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(mult(x1, x2)) = 0
POL(s(x1)) = [2] + x1
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
mult(0, z0) → 0
mult(s(z0), z1) → add(z1, mult(z0, z1))
Tuples:
ADD(s(z0), z1) → c1(ADD(z0, z1))
MULT(s(z0), z1) → c3(ADD(z1, mult(z0, z1)), MULT(z0, z1))
S tuples:
MULT(s(z0), z1) → c3(ADD(z1, mult(z0, z1)), MULT(z0, z1))
K tuples:
ADD(s(z0), z1) → c1(ADD(z0, z1))
Defined Rule Symbols:
add, mult
Defined Pair Symbols:
ADD, MULT
Compound Symbols:
c1, c3
(5) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
MULT(s(z0), z1) → c3(ADD(z1, mult(z0, z1)), MULT(z0, z1))
We considered the (Usable) Rules:
mult(0, z0) → 0
mult(s(z0), z1) → add(z1, mult(z0, z1))
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
And the Tuples:
ADD(s(z0), z1) → c1(ADD(z0, z1))
MULT(s(z0), z1) → c3(ADD(z1, mult(z0, z1)), MULT(z0, z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(0) = [3]
POL(ADD(x1, x2)) = 0
POL(MULT(x1, x2)) = x1
POL(add(x1, x2)) = [5] + [5]x1
POL(c1(x1)) = x1
POL(c3(x1, x2)) = x1 + x2
POL(mult(x1, x2)) = [2] + [3]x1
POL(s(x1)) = [2] + x1
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
add(0, z0) → z0
add(s(z0), z1) → s(add(z0, z1))
mult(0, z0) → 0
mult(s(z0), z1) → add(z1, mult(z0, z1))
Tuples:
ADD(s(z0), z1) → c1(ADD(z0, z1))
MULT(s(z0), z1) → c3(ADD(z1, mult(z0, z1)), MULT(z0, z1))
S tuples:none
K tuples:
ADD(s(z0), z1) → c1(ADD(z0, z1))
MULT(s(z0), z1) → c3(ADD(z1, mult(z0, z1)), MULT(z0, z1))
Defined Rule Symbols:
add, mult
Defined Pair Symbols:
ADD, MULT
Compound Symbols:
c1, c3
(7) SIsEmptyProof (EQUIVALENT transformation)
The set S is empty
(8) BOUNDS(O(1), O(1))